<?php
namespace app\home\service;
class ErrorService{
	 public $path       ="./runtime/error_service/";//文件的路径
	 public $resource   ="";//存储文件资源
     public $pathName   ="";
     public $file       ="";

    /**初始化
     * ErrorLog constructor.
     * @param $fileName
     * @param $name
     */
     public function __construct($fileName='log',$name='/log.ini'){
          //$fileName 是写入的文件名
          if(!is_dir($this->path)){
          	//判断路径是否正确  如果路径不存在则创建一个路径
          	mkdir($this->path,0777);
          	chmod($this->path,0777);
          }

          if(!is_dir($this->path.$fileName) ){
               //判断路径是否正确  如果路径不存在则创建一个路径
               if(strpos($fileName,'/') !== false){
                    $a=explode('/',$fileName);
                    if(!is_dir($this->path.$a[0])){
                         mkdir($this->path.$a[0],0777);
                        chmod($this->path.$a[0],0777);
                    }
               }
               mkdir($this->path.$fileName,0777);
              chmod($this->path.$fileName,0777);
          }
          $this->resource=fopen($this->path.$fileName.$name,'a+');//用a+的方式会自动创建文件
          //$this->resource里面就是文件的资源
          $this->pathName=$this->path.$fileName.$name;
          $this->file=$fileName;

     }

    /**打开资源
     * @return bool|resource
     */
     function _fopen(){
          return fopen($this->pathName,"a+");
     }

    /**写入文件
     * @param string $content
     * @return bool|int
     */
//     public function textWrite($content=""){
//          //判断内容是否为空
//          if(trim($content)==""){
//               return false;
//          }
//          else{
//               //得先判断文件是否有内容
//               if(filesize($this->pathName)>0){
//                    //当文件的字节长度大于0的时候证明文件有内容
//                    //写入换行
//                    fwrite($this->resource,"\r\n");
//               }
//               return fwrite($this->resource,$content);
//          }
//
//     }

    /**写入文件2
     * @param string $content
     * @return bool|int
     */
      public function textWrite($content=""){
          //die;
          //判断内容是否为空
          if(trim($content)==""){
               return false;
          }else{
               //得先判断文件是否有内容
               if(filesize($this->pathName)>0){
                    //当文件的字节长度大于0的时候证明文件有内容
                    //写入换行
                    fwrite($this->resource,"\r\n");
               }
               $mb=1024*1024*50;
               $zj=filesize($this->pathName);
               if($zj>$mb){
                    $str = file_get_contents($this->pathName);//读取文件
                    $file_name=$this->path.$this->file.'/'.date('Y-m-d');
                    if(!is_dir($file_name) ){
                         //判断路径是否正确  如果路径不存在则创建一个路径
                         mkdir($file_name,0777);
                        chmod($file_name,0777);
                    }
                    $resource_name=fopen($file_name.'/'.date('YmdHis').'.ini','a+');//用a+的方式会自动创建文件
                    fwrite($resource_name,$str);
                    $fh = fopen($this->pathName, "w+");
                    fclose($fh);
               }
               return fwrite($this->resource,$content);
          }

     }

    /**读取文件 只读两个字节
     * @return array|bool
     */
     public function textRead(){
          $length=filesize($this->pathName);//获得文件的字节数
          if($length>0){
               //有内容才能读取
               $fileString = fread($this->_fopen(),$length);//获得文件的所有内容
               if($fileString==false){
                    //读取失败，比如权限问题
                    return false;
               }
               else{
                    //返回数组
                    $arr=explode("\r\n",$fileString);
                    return $arr;

               }
          }

     }

    /**
     * 结束
     */
     public function __destruct(){
          //在对象被注销  或者重新赋值的时候回自动调用
          fclose($this->resource);
     }
}